package com.wgh.product.converter;

import com.wgh.product.dto.ProductProductTagDTO;
import com.wgh.product.entity.shop.ProductProductTag;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

/**
 * 商品标签关联转换器
 * 用于ProductProductTag实体和ProductProductTagDTO之间的转换
 */
@Component
public class ProductProductTagConverter {

    /**
     * 将ProductProductTag实体转换为ProductProductTagDTO
     * @param productProductTag ProductProductTag实体
     * @return ProductProductTagDTO
     */
    public ProductProductTagDTO toDTO(ProductProductTag productProductTag) {
        if (productProductTag == null) {
            return null;
        }
        
        ProductProductTagDTO productProductTagDTO = new ProductProductTagDTO();
        productProductTagDTO.setId(productProductTag.getId());
        productProductTagDTO.setProductId(productProductTag.getProductId());
        productProductTagDTO.setTagId(productProductTag.getTagId());
        productProductTagDTO.setCreateTime(productProductTag.getCreateTime());
        productProductTagDTO.setUpdateTime(productProductTag.getUpdateTime());
        
        return productProductTagDTO;
    }
    
    /**
     * 将ProductProductTagDTO转换为ProductProductTag实体
     * @param productProductTagDTO ProductProductTagDTO
     * @return ProductProductTag实体
     */
    public ProductProductTag toEntity(ProductProductTagDTO productProductTagDTO) {
        if (productProductTagDTO == null) {
            return null;
        }
        
        ProductProductTag productProductTag = new ProductProductTag();
        productProductTag.setId(productProductTagDTO.getId());
        productProductTag.setProductId(productProductTagDTO.getProductId());
        productProductTag.setTagId(productProductTagDTO.getTagId());
        
        return productProductTag;
    }
    
    /**
     * 将ProductProductTag实体列表转换为ProductProductTagDTO列表
     * @param productProductTags ProductProductTag实体列表
     * @return ProductProductTagDTO列表
     */
    public List<ProductProductTagDTO> toDTOList(List<ProductProductTag> productProductTags) {
        if (productProductTags == null || productProductTags.isEmpty()) {
            return new ArrayList<>();
        }
        
        List<ProductProductTagDTO> productProductTagDTOs = new ArrayList<>();
        for (ProductProductTag productProductTag : productProductTags) {
            productProductTagDTOs.add(toDTO(productProductTag));
        }
        
        return productProductTagDTOs;
    }
    
    /**
     * 将ProductProductTagDTO列表转换为ProductProductTag实体列表
     * @param productProductTagDTOs ProductProductTagDTO列表
     * @return ProductProductTag实体列表
     */
    public List<ProductProductTag> toEntityList(List<ProductProductTagDTO> productProductTagDTOs) {
        if (productProductTagDTOs == null || productProductTagDTOs.isEmpty()) {
            return new ArrayList<>();
        }
        
        List<ProductProductTag> productProductTags = new ArrayList<>();
        for (ProductProductTagDTO productProductTagDTO : productProductTagDTOs) {
            productProductTags.add(toEntity(productProductTagDTO));
        }
        
        return productProductTags;
    }
}